package com.ruoyi.business.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.business.domain.TRegisterInfo;
import com.ruoyi.business.vo.*;
import com.ruoyi.business.vo.export.ExportRegisterInfoVo;
import com.ruoyi.business.vo.export.ExportSignedFilesVo;
import com.ruoyi.business.vo.export.RegisterManualAllInfoVo;
import com.ruoyi.business.vo.export.RegisterManualInfoVo;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;

import java.text.ParseException;
import java.util.List;

/**
 * 报名信息Service接口
 *
 * @author Tellsea
 * @date 2024-01-24
 */
public interface ITRegisterInfoService extends IService<TRegisterInfo> {

    /**
     * 分页查询
     *
     * @param entity
     * @return
     */
    TableDataInfo<TRegisterInfoVo> queryList(TRegisterInfoVo entity);

    TableDataInfo<TRegisterInfoVo> queryListByStudent(TRegisterInfoVo entity);

    /**
     * 分页查询学员端
     * @param entity
     * @return
     */
    TableDataInfo<TRegisterInfoVo> queryIndexList(TRegisterInfoVo entity);

    TableDataInfo<TRegisterInfoVo> queryIndexListNoDetail(TRegisterInfoVo entity);

    /**
     * 查询全部
     *
     * @param entity
     * @return
     */
    List<TRegisterInfoVo> queryAll(TRegisterInfoVo entity);

    List<TRegisterInfoVo> queryAllSingle(TRegisterInfoVo entity);

    TRegisterBaseVo queryByCount(TRegisterBaseVo entity);

    TableDataInfo<TRegisterBaseVo> queryByDept(TRegisterBaseVo entity);

    /**
     * 根据ID查询
     *
     * @param id
     * @return
     */
    TRegisterInfoVo queryById(Long id);

    List<FlowNodeVo> getFlow(Long id);

    /**
     * 报名之前
     *
     * @param entity
     * @return
     */
    AjaxResult saveBefore(TRegisterInfoVo entity);

    /**
     * 报名
     *
     * @param entity
     * @return
     */
    AjaxResult saveEntity(TRegisterInfoVo entity);

    /**
     * 查询最新报名成功记录
     *
     * @return
     */
    AjaxResult getLast();

    /**
     * 获取学员导出
     * @param entity
     * @return
     */
    List<ExportRegisterInfoVo> getExportList(TRegisterInfoVo entity);

    List<RegisterManualInfoVo> exportRegisterInfo(TRegisterInfoVo entity);

    List<RegisterManualAllInfoVo> exportRegisterInfoAll(TRegisterInfoVo entity);

    void updateCultureStatusForNoCulture();

    void insertCultureStatusForNoCultureLog();

    List<ExportSignedFilesVo> exportAllSignedFiles(TRegisterInfoVo entity);

    TableDataInfo<TRegisterXXQYVo> getXXQYRegisterList(OpenApiTokenVo tokenVo);

    TableDataInfo<TRegisterXXQYVo> getXxqyJyRegisterList(OpenApiTokenVo tokenVo);

    AjaxResult judgeRegister(Long id);

    Boolean batchRemoveByIds(List<Long> list);
}
